自动驾驶场景构建方法(matlab源码)/采用编程方法构建驾驶场景

您所在的位置:网站首页 python 轨迹汽车模拟场景 自动驾驶场景构建方法(matlab源码)/采用编程方法构建驾驶场景

自动驾驶场景构建方法(matlab源码)/采用编程方法构建驾驶场景

2024-07-15 10:30| 来源: 网络整理| 查看: 265

场景是自动驾驶测试系统中相当重要的一环,测试场景的多样性、覆盖性、典型性等能够影响到测试结果的准确性,从而保证自动驾驶的安全与质量。

场景,指的是行驶场合和驾驶情景的组合,它受行驶环境的深刻影响,如道路、交通、天气、光照等因素,共同构成整个场景概念。场景是在一定时间和空间范围内环境与驾驶行为的综合反映,描述了道路、交通设施、气象条件、交通参与物等外部状态以及自车的驾驶任务和状态等信息。从场景架构来看,有不同的行驶场合,像高速公路、乡村道路、城市工况、机场、码头、封闭园区等;在该场合下,如何驾驶、驾驶任务、驾驶速度、驾驶模式等一起构成了整个场景的三维架构。

与传统汽车的物理性能测试评价体系不同,自动驾驶汽车在测试评价内容和形式上都有明显不同,在传统汽车测试基础上发生了根本性的改变:传统汽车测试注重评价机器在执行命令时的表现,自动驾驶测试重视评价整车多传感器的配合以及传感器融合输出的感知、判断和决策能力;传统测试的场景存在固定模式和情境,但自动驾驶汽车的测试场景需要具备多样化、典型性等特点,需要尽可能覆盖所有复杂的特殊场景;自动驾驶测试的软件系统和硬件设备也都发生了天翻地覆的变化。

目前自动驾驶领域安全事故频发,安全成为自动驾驶领域要解决的本质问题,业界和社会都需要具备更高可靠性的自动驾驶技术来夯实发展基础,其中,挖掘测试场景、丰富和完善测试技术是提高自动驾驶安全性能的极重要一步。

1.场景构建有三种方法

       编程方法

       图形化界面方法

       场景库方法

2.采用编程方法构建驾驶场景(每一段代码单独运行)

构建并显示空的驾驶场景

s=drivingScenario; plot(s)

构建道路

直路

s=drivingScenario; roadCenters=[0,0;100,0]; roadWidth=16; road(s,roadCenters,roadWidth); plot(s)

十字交叉路

s=drivingScenario; roadCenters=[0,0;100,0]; roadWidth=16; road(s,roadCenters,roadWidth); roadCenters=[50,-50;50,50]; road(s,roadCenters,roadWidth); plot(s)

丁字路

s=drivingScenario; roadCenters=[0,0;92,0]; roadWidth=16; road(s,roadCenters,roadWidth); roadCenters=[92,-50;92,50]; road(s,roadCenters,roadWidth); plot(s)

弯道

s=drivingScenario; roadCenters=[0,0;40,-10;100,-60]; roadWidth=16; road(s,roadCenters,roadWidth); plot(s)

环道

s=drivingScenario; roadCenters=[-15,-15;15,-15;15,15;-15,15;-15,-15]; road(s,roadCenters); road(s,[-35,0;-20,0]); road(s,[20,0;35,0]); road(s,[0,35;0,20]); road(s,[0,-20;0,-35]); plot(s)

8字型道路

s=drivingScenario; roadCenters=[0,0,1,;20,-20,1;20,20,1;-20,-20,1;-20,20,1;0,0,1]; roadWidth=3; bankAngle=[0,15,15,-15,-15,0]; road(s,roadCenters,roadWidth,bankAngle) plot(s)

3.构建道路的车道

双向6车道直路

s=drivingScenario; roadCenters=[0,0;100,0]; road(s,roadCenters,"Lanes",lanespec([3 3])); plot(s,"RoadCenters","on")

双向4车道直路

s=drivingScenario; roadCenters=[0,0;100,0]; lm=[laneMarking("Solid"),laneMarking("Dashed"),... laneMarking("SolidDashed","Color","y"),... laneMarking("Dashed"),laneMarking("Solid")]; ls=lanespec(4,"marking",lm); road(s,roadCenters,"Lanes",ls); plot(s)

4.添加交通参与者

在长100m,宽16m的道路上添加一辆车,车辆位于道路中心,速度为50km/h

s=drivingScenario; roadCenters=[0,0;100,0]; roadWidth=16; road(s,roadCenters,roadWidth); plot(s) egocar=vehicle(s); waypoints=roadCenters; speed=13.89; trajectory(egocar,waypoints,speed); while advance(s) pause(0.01); end

车辆在十字路口左转弯的场景

s=drivingScenario; road(s,[0,-25;0,25],7); road(s,[-25,0;25,0],7); Car=vehicle(s); waypoints=[-24.0,-7.0,-3.5,-3.0,1.5,1.5,1.5,-1.5,-1.5,-1.5,-1.5,3.0,3.5,21.0]'; speed=[20.0,0.0,5.0,5.0,10.0,12.0,20.0]; trajectory(Car,waypoints,speed); plot(s,"waypoints","on","Centerline","on"); while advance(s) pause(0.01); end

构建一个驾驶场景,包含一条弯道和两条直道,其中弯道半径为200m,弯道宽度为10m,弯道上有一辆汽车;一条直道上有一辆自行车,另一条直道上有一行人

s=drivingScenario; angs= [0:5:90]'; R=200; roadCenters=R*[cosd(angs),sind(angs),zeros(size(angs))]; roadWidth=10; road(s,roadCenters,roadWidth); roadCenters=[160,20,0;0,20,0]; road(s,roadCenters) roadCenters=[160,50,0;0,50,0]; road(s,roadCenters) rbdry=roadBoundaries(s); car=vehicle(s,"Position",[0,200,0]); bicycle=actor(s,"Position",[0,50,0]); pedestrian=actor(s,"Position",[0,20,0]); plot(s,"Centerline","on","RoadCenters","on")

下一章节:通过图形化界面构建驾驶场景



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3